package cn.zhuzicc.reflect;

import java.lang.annotation.ElementType;

/**
 * @author zx
 * @version 1.0
 * @className: Test04
 * @description: 哪些类型可以有Class对象
 * @date: 2021/4/26 16:31
 */
public class Test04 {
    public static void main(String[] args) {
        // 类
        Class<Object> c1 = Object.class;
        // 接口
        Class<Comparable> c2 = Comparable.class;
        // 一维数组
        Class<String[]> c3 = String[].class;
        // 二维数组
        Class<int[][]> c4 = int[][].class;
        // 注解
        Class<Override> c5 = Override.class;
        // 枚举
        Class<ElementType> c6 = ElementType.class;
        // 基本数据类型包装类
        Class<Integer> c7 = Integer.class;
        // void
        Class<Void> c8 = void.class;
        // Class
        Class<Class> c9 = Class.class;

        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
        System.out.println(c7);
        System.out.println(c8);
        System.out.println(c9);
        System.out.println("\n数组长度不相同，是否是同一个class对象?");

        // 数组长度不相同，是否是同一个class对象
        int[] arr1 = new int[10];
        int[] arr2 = new int[100];

        System.out.println(arr1.getClass().hashCode());
        System.out.println(arr2.getClass().hashCode());
    }
}